Хорошо, давайте начнём. Сначала — о скучном, но необходимом для понимания. Используются две ключевые особенности веб-сервера, на котором работает Synology — Apache: виртуальные хосты (virtual hosts) и прокси на стороне сервера (reverse proxy), обе они встроены в веб-сервер, так что ничего больше, кроме редактирования конфигурационных файлов и перезапуска процессов, не потребуется. Правда, чтобы научиться это делать тем, кто ранее с Unix-подобными системами дела не имел, нужно будет преодолеть какой-то минимальный входной порог, но дело, мне кажется, стоит того. Исходные условия: у нас версия DSM 5.0 или более поздняя, мы умеем подключаться с помощью программы типа «Терминал» по протоколу SSH или Telnet к нашей Synology (доступ по одному из этих протоколов нужно на ней предварительно разрешить и — важная деталь — входить не с именем admin, а с именем root, пароль тот же), умеем пользоваться встроенным редактором файлов vi, работающим прямо из командной строки (или, если это кажется неудобным, воспользоваться какой-нибудь альтернативой для доступа к файлам, находящимся за пределами пользовательского раздела; среди таких я знаю программу WinSCP для Windows и Config File Editor — сторонний модуль непосредственно для DSM), обладаем минимальными знаниями для того, чтобы ориентироваться в интерфейсе командной строки (ну там сменить текущий каталог, посмотреть содержимое каталога, запустить команду, просмотреть текстовый файл и т. п.).
Веб-сервер Apache работает на Synology в трёх экземплярах: системный (этот процесс обслуживает веб-интерфейс DSM), пользовательский (это сайты пользователей и Photo Station, а также некоторые другие пакеты) и отдельный экземпляр для WebDAV. Последние два будут существовать, если включены соответствующие настройки в веб-интерфейсе DSM. Нас интересует «пользовательский» экземпляр, его конфигурация находится в файле /etc/httpd/conf/httpd.conf-user
Наши добавления в конфигурацию очевидным образом нужно будет внести в конец файла, но тут нас стерегут неожиданности. Следует иметь в виду, что при переконфигурировании веб-сервера (а это случается всякий раз, когда вы ставите и удаляете галочки в веб-интерфейсе DSM, затрагивающие веб-сервер — в основном они находятся в разделе «Веб-службы»), сама Synology может что-то дописать в конец, испортив, а то и уничтожив вашу конфигурацию. То же самое (и даже хуже — полное перезатирание конфигурации), кстати, случается при обновлении операционной системы, поэтому в любом случае после такого обновления нужно будет восстанавливать то, что мы себе так любовно настроили, поэтому нужно уже с самого начала распланировать всё так, чтобы это давалось наименьшей кровью. Не могу вам навязывать, но я решил для себя эту задачу так: вместо того, чтобы редактировать «штатный» файл конфигурации с риском, что с очередным обновлением или переконфигурацией там что-то важное изменится, всё мне испортив, я на его основе сделал свой собственный конфигурационный файл, и пользуюсь им не в дополнение к предусмотренному программистами Synology, а вместо него. Находится мой файл на пользовательском разделе: /volume1/web/httpd.conf, а чтобы Apache при запуске игнорировал штатный, и подключал мой файл, пришлось добавить всего одну строчку ещё в один конфигурационный файл: /etc/init/httpd-user.conf
Несмотря на похожее имя, это не есть конфигурационный файл Apache, это скрипт его запуска (аналогичные скрипты в том же каталоге есть и для множества других сервисов). Там, в районе 90-й строки нужно произвести изменения (вставить строчку) так.
Было:
script
. /run/httpd/http-user-upstart
exec env TMPDIR=${TmpDir} PATH=${PHP_PATH} /usr/bin/httpd $startArg
end script
Стало:
script
. /run/httpd/http-user-upstart
startArg="$startArg -f /volume1/web/httpd.conf"
exec env TMPDIR=${TmpDir} PATH=${PHP_PATH} /usr/bin/httpd $startArg
end script
Собственно говоря, при таком подходе это будет единственным изменением, которое нужно будет восстанавливать даже после полного обновления системы. Смысл изменения прост: добавить в командную строку запуска опцию, говорящую серверу Apache (его «пользовательскому» экземпляру) при старте: возьми конфигурацию из указанного файла, проигнорировав ту, путь к которой зашит у тебя в коде при компиляции.
Поздно уже, спать пойду, потом продолжу, извините.